﻿using Datos.Repositories;
using Entidad;
using Entidad.Criterios;
using Servicios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace RealGestion_Web.Controllers
{
    public class MarcaController : Controller
    {
        //
        // GET: /Marca/

        public ActionResult Index()
        {
            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            IList<Marca> datos = marcaSvc.FindAll();

            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            ViewData["proveedores"] = new SelectList(proveedorSvc.FindAll(), "Id", "NombreFantasia");

            return View(datos);
        }

        [HttpGet]
        public ActionResult Crear()
        {
            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            ViewData["proveedores"] = new SelectList(proveedorSvc.FindAll(), "Id", "NombreFantasia");

            EstadoServices estadoSvc = new EstadoServices(new EstadoRepository());
            ViewData["estados"] = new SelectList(estadoSvc.FindAll(), "Id", "Denominacion");

            return View();
        }

        [HttpPost]
        public ActionResult Crear(Marca marca)
        {
            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            int resultado = marcaSvc.Add(marca);
            if (resultado > 0)
                return RedirectToAction("Index");
            else
                return View();
        }


        public ActionResult FindById(int id)
        {
            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            ViewData["proveedores"] = new SelectList(proveedorSvc.FindAll(), "Id", "NombreFantasia");

            EstadoServices estadoSvc = new EstadoServices(new EstadoRepository());
            ViewData["estados"] = new SelectList(estadoSvc.FindAll(), "Id", "Denominacion");

            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            IList<Marca> datos = marcaSvc.FindAll();

            Marca marca = marcaSvc.FindById(id);
            return View("Modificar", marca);
        }


        public ActionResult Eliminar(int id)
        {
            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            bool resultado = marcaSvc.Remove(id);
            
            return RedirectToAction("Index");
        }


        [HttpPost]
        public ActionResult Modificar(Marca marca)
        {
            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            int resultado = marcaSvc.Modify(marca);

            return RedirectToAction("Index");
        }


        [HttpPost]
        public ActionResult BuscarPorCriterios(string denominacion, [Bind]int IdProveedor)
        {
            MarcaCriteria filtro = new MarcaCriteria()
            {
                Denominacion = denominacion,
                IdProveedor = IdProveedor,
            };

            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            ViewData["proveedores"] = new SelectList(proveedorSvc.FindAll(), "Id", "NombreFantasia");

            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            IList<Marca> datos = marcaSvc.FindByCriteria(filtro);

            return PartialView("Index", datos);
        }

    }
}
